package com.zh.netty.nio;


import java.nio.ByteBuffer;

/**
 * 一个普通Buffer 转为只读Buffer
 */
public class ReadOnlyBuffer {
    public static void main(String[] args) {
        // 创建一个Buffer
        ByteBuffer byteBuffer = ByteBuffer.allocate(64);
        for (int i = 0; i < 64; i++) {
            byteBuffer.put((byte)i);
        }

        // 反转
        byteBuffer.flip();
        // 得到一个只读的buffer
        ByteBuffer readOnlyBuffer = byteBuffer.asReadOnlyBuffer();
        System.out.println("查看buffer的类型："+readOnlyBuffer.getClass());

        // 循环读取，readOnlyBuffer.hasRemaining()：告知在当前位置和限制之间是否有元素
        while (readOnlyBuffer.hasRemaining()){
            System.out.println(readOnlyBuffer.get());
        }

        // 如果往readOnlyBuffer中输入数据就会抛出异常：java.nio.ReadOnlyBufferException
        readOnlyBuffer.put((byte)1);
    }
}
